home *** CD-ROM | disk | FTP | other *** search
/ Amiga Games: Greatest Hits 1996 / Amiga Games: Greatest Hits 1996.iso / spiele / publicdomain / amigamud-tt / magic / list-mana.m < prev    next >
Text File  |  1996-07-05  |  6KB  |  220 lines

  1. /*
  2.  * magic/list-mana.m Magic spells about magic
  3.  */
  4.  
  5.  
  6. /***** Scroll Spells *****
  7. * Create Scroll <spell>
  8. **************************/
  9.  
  10. define tp_magic proc se_Scroll(thing spellMe; string spellName)bool:
  11.   thing me, scroll, spell;
  12.   string fSpellName;
  13.   status st;
  14.  
  15.   me:=Me();
  16.   fSpellName:=FormatName(spellName);
  17.   st:=FindName(me@p_pLearnt,p_sName,spellName);
  18.   if st = succeed then
  19.     spell:=FindResult();
  20.     if spellName="?" then
  21.       Print(spellMe@p_sDesc + "\n");
  22.       false
  23.     else
  24.       scroll:=SpellToScroll(spell);
  25.       DelElement(me@p_pLearnt,spell);
  26.       scroll@p_oCarryer:=me;
  27.       AddTail(me@p_pCarrying,scroll);
  28.       Print("You are now carrying a new scroll\n");
  29.       true
  30.     fi
  31.   elif st=continue then
  32.     Print(spellName + " is ambiguous.\n");
  33.     false
  34.   else
  35.     Print("You do not know any spells named "+spellName+".\n");
  36.     false
  37.   fi
  38. corp;
  39.  
  40. define tp_magic sm_Scroll CreateThing(sm_DefaultSpell).
  41. sm_Scroll@p_sDesc:="Create Scroll on <spell>.".
  42. sm_Scroll@p_sName:="scroll;create".
  43. sm_Scroll@p_sCost:=2.
  44. sm_Scroll@p_sLevel:=2.
  45. sm_Scroll@p_sEffect:=se_Scroll.
  46.  
  47. /***** Potion Spell *****
  48. * Create Potion <spell>
  49. **************************/
  50.  
  51. define tp_magic proc se_Potion(thing spellMe; string spellName)bool:
  52.   thing me, potion, spell;
  53.   string fSpellName;
  54.   status st;
  55.  
  56.   me:=Me();
  57.   fSpellName:=FormatName(spellName);
  58.   st:=FindName(me@p_pLearnt,p_sName,spellName);
  59.   if st = succeed then
  60.     spell:=FindResult();
  61.     if spellName="?" then
  62.       Print(spellMe@p_sDesc + "\n");
  63.       false
  64.     else
  65.       potion:=SpellToPotion(spell);
  66.       if potion~=nil then
  67.     DelElement(me@p_pLearnt,spell);
  68.     if CarryItem(potion) then
  69.       Print(AAn("You are now carrying",FormatName(potion@p_oName)) + ".\n");
  70.       if not me@p_pHidden and CanSee(Here(),me) then
  71.         OPrint(FormatName(me@p_pName)+AAn(" guestures arcanely, and creates",FormatName(potion@p_oName)) + ".\n");
  72.       fi;
  73.     else
  74.       AddTail(Here()@p_rContents,potion);
  75.       Print(AAn("You have created" , FormatName(potion@p_oName)) + " and dropped it.\n");
  76.       if not me@p_pHidden and CanSee(Here(),me) then
  77.         OPrint(FormatName(me@p_pName)+AAn(" guestures arcanely, and creates", FormatName(potion@p_oName)) + " on the floor.\n");
  78.       else
  79.         OPrint(AAn("",FormatName(potion@p_oName)) + " appears on the floor.\n");
  80.       fi;
  81.     fi;
  82.     true
  83.       else
  84.     Print("The " + FormatName(spell@p_sName) + " spell does not have a potion form.\n");
  85.     false
  86.       fi
  87.     fi
  88.   elif st=continue then
  89.     Print(spellName + " is ambiguous.\n");
  90.     false
  91.   else
  92.     Print("You do not know any spells named "+spellName+".\n");
  93.     false
  94.   fi
  95. corp;
  96.  
  97. define tp_magic sm_Potion CreateThing(sm_DefaultSpell).
  98. sm_Potion@p_sDesc:="create potion on <spell>.".
  99. sm_Potion@p_sName:="potion;create".
  100. sm_Potion@p_sCost:=6.
  101. sm_Potion@p_sLevel:=6.
  102. sm_Potion@p_sEffect:=se_Potion.
  103.  
  104. /**** grant magery *****
  105. * enables magic for <who|what>
  106. ***************/
  107.  
  108. define tp_magic proc se_GrantMagery(thing spell; string name)bool:
  109.   thing who;
  110.  
  111.   who:=NameToThing(name);
  112.   if who = nil then
  113.     Print("There is no character or machine called '" + name + "'.\n");
  114.   else
  115.     InitMage(who);
  116.   fi;
  117.   true
  118. corp;
  119.  
  120. define tp_magic sm_GrantMagery CreateThing(sm_DefaultWSpell).
  121. sm_GrantMagery@p_sName:="magery;grant".
  122. sm_GrantMagery@p_sEffect:=se_GrantMagery.
  123. sm_GrantMagery@p_sDesc:="grant magery to <who>".
  124. sm_GrantMagery@p_sNull:="me".
  125. sm_GrantMagery@p_sPotionDesc:="This potion is mostly clear, except for the "
  126.     "numerous colored bubbles that appear, and rise to the surface.\n".
  127.  
  128.  
  129. /***** MemLock Spell *****
  130. * Mem Lock <spell>
  131. **************************/
  132.  
  133. define tp_magic proc se_MemLock(thing spellMe; string spellName)bool:
  134.   thing me, scroll, spell;
  135.   string fSpellName;
  136.   status st;
  137.  
  138.   me:=Me();
  139.   fSpellName:=FormatName(spellName);
  140.   st:=FindName(me@p_pLearnt,p_sName,spellName);
  141.   if st = succeed then
  142.     spell:=FindResult();
  143.     if spellName="?" then
  144.       Print(spellMe@p_sDesc + "\n");
  145.       false
  146.     else
  147.       spell@p_sPersist:= not spell@p_sPersist;
  148.       if spell@p_sPersist then
  149.     Print(fSpellName + " is now locked\n");
  150.       else
  151.     Print(fSpellName + " is now unlocked\n");
  152.       fi;
  153.       true
  154.     fi
  155.   elif st=continue then
  156.     Print(spellName + " is ambiguous.\n");
  157.     false
  158.   else
  159.     Print("You do not know any spells named "+spellName+".\n");
  160.     false
  161.   fi
  162. corp;
  163.  
  164. define tp_magic sm_MemLock CreateThing(sm_DefaultWSpell).
  165. sm_MemLock@p_sDesc:="Mem Lock on <spell>.".
  166. sm_MemLock@p_sName:="lock;mem".
  167. sm_MemLock@p_sCost:=0.
  168. sm_MemLock@p_sLevel:=0.
  169. sm_MemLock@p_sEffect:=se_MemLock.
  170.  
  171.  
  172. /***** Restore Mana Spells *****
  173. * Restore Mana <who>
  174. **************************/
  175.  
  176. define tp_magic proc se_RestoreMana(thing spell; string name)bool:
  177.   thing who;
  178.   int m,n,d;
  179.  
  180.   who:=NameToThing(name);
  181.   if who = nil then
  182.     Print("There is no character or machine called '" + name + "'.\n");
  183.   else
  184.     m:=who@p_pManaMax;
  185.     if m=0 then
  186.       Print(FormatName(who@p_pName) + " has no mana.\n");
  187.     else
  188.       n:=who@p_pManaNow;
  189.       d:=spell@p_sPower;
  190.       if d+n>m then
  191.     d:=m-n;
  192.       fi;
  193.       who@p_pManaNow:=n+d;
  194.       if who=Me() then
  195.     Print("You have regained " + IntToString(d) + " Mana Points.\n");
  196.       else
  197.     SPrint(who,FormatName(Me()@p_pName) + " has restored " + IntToString(d) + " Mana Points to you.\n");
  198.     Print("You have restored " + IntToString(d) + " Mana Points to " + FormatName(who@p_pName) + ".\n");
  199.       fi;
  200.     fi;
  201.   fi;
  202.   true
  203. corp;
  204.  
  205. define tp_magic sm_RestoreMana CreateThing(sm_DefaultWSpell).
  206. sm_RestoreMana@p_sEffect:=se_GrantMagery.
  207. sm_RestoreMana@p_sNull:="me".
  208. sm_RestoreMana@p_sPotionDesc:="This translucent potion contains many multi "
  209.     "coloured streaks which seem to dance and intertwine.".
  210. sm_RestoreMana@p_sDesc:="restore mana to <who>; restores some mana.".
  211. sm_RestoreMana@p_sName:="mana;lesser,restore".
  212. sm_RestoreMana@p_sPower:=5.
  213. define tp_magic sm_RestoreMana2 CreateThing(sm_RestoreMana).
  214. sm_RestoreMana2@p_sName:="mana;greater,restore".
  215. sm_RestoreMana2@p_sPower:=10.
  216.  
  217.  
  218. /**** End of file */
  219.  
  220.